package Vue;

import javax.swing.JDialog;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import java.awt.Label;
import java.awt.Color;
import javax.swing.JButton;

import Controleur.AjoutClientKeyListener;
import Controleur.AjoutClientBtnListener;
import java.awt.Dimension;
import java.awt.Point;

/**
 * Définit les fenêtres d'ajout client
 */
public class AjoutClient extends JDialog{

	private static final long serialVersionUID = 1L;
	/** Champ prénom du client */
	private JTextField Field_Prenom;
	/** Champ nom du client */
	private JTextField Field_Nom;
	/** Champ date de naissance du client */
	private DateField Field_DateN;
	/** Champ Lieu de naissance du client */
	private JTextField Field_LieuNaiss;
	/**  Label décrivant si les données sont bien remplies ou non */
	private final JLabel lblToutesLesDonnes = new JLabel("Toutes les donn\u00E9es ne sont pas bien remplies.");	
	/** Couleur rouge utilisée pour changer les labels */
	private final Color red=new Color(128, 0, 0);	
	/** Couleur verte utilisée pour changer les labels */
	private final Color green=new Color(0, 128, 0);
	/** Bouton validant l'ajout du client */
	private final JButton btnValider = new JButton("Valider");
	
	
	/**
	 * Instancie une nouvelle fenêtre d'ajout client
	 */
	public AjoutClient() {
		setModal(true);
		setLocation(new Point(200, 200));
		setMinimumSize(new Dimension(450, 450));
		setResizable(false);

		
		JPanel panel = new JPanel();
		getContentPane().add(panel, BorderLayout.CENTER);
		panel.setLayout(null);
		
		JLabel lblAjoutDunNouveau = new JLabel("Ajout d'un nouveau client ");
		lblAjoutDunNouveau.setFont(new Font("Tahoma", Font.BOLD, 16));
		lblAjoutDunNouveau.setBounds(117, 11, 228, 43);
		panel.add(lblAjoutDunNouveau);
		
		JLabel lblPrnom = new JLabel("Pr\u00E9nom");
		lblPrnom.setBounds(54, 92, 56, 16);
		panel.add(lblPrnom);
		
		Field_Prenom = new LimitedTextField(40);
		Field_Prenom.setBounds(175, 89, 116, 22);
		panel.add(Field_Prenom);
		Field_Prenom.setColumns(10);
		
		JLabel lblNom = new JLabel("Nom");
		lblNom.setBounds(54, 145, 56, 16);
		panel.add(lblNom);
		
		Field_Nom = new LimitedTextField(40);

		Field_Nom.setBounds(175, 142, 116, 22);
		panel.add(Field_Nom);
		Field_Nom.setColumns(10);
		
		JLabel lblDateDeNaissance = new JLabel("Date de naissance");
		lblDateDeNaissance.setBounds(54, 198, 109, 16);
		panel.add(lblDateDeNaissance);
		
		Field_DateN = new DateField();
		Field_DateN.setBounds(175, 195, 116, 22);
		panel.add(Field_DateN);
		
		Label label = new Label("(JJ.MM.AAAA)");
		label.setBounds(306, 196, 92, 21);
		panel.add(label);
		
		Field_LieuNaiss = new LimitedTextField(150);
		Field_LieuNaiss.setBounds(175, 245, 116, 22);
		panel.add(Field_LieuNaiss);
		Field_LieuNaiss.setColumns(10);
	
		lblToutesLesDonnes.setForeground(new Color(128, 0, 0));
		lblToutesLesDonnes.setBounds(92, 304, 274, 16);
		panel.add(lblToutesLesDonnes);
		btnValider.setEnabled(false);
		btnValider.setFont(new Font("Tahoma", Font.BOLD, 13));
		btnValider.setForeground(new Color(0, 128, 0));
		btnValider.setBounds(175, 363, 97, 25);
		panel.add(btnValider);
		
		JLabel lblLieuDeNaissance = new JLabel("Lieu de naissance");
		lblLieuDeNaissance.setBounds(54, 249, 123, 14);
		panel.add(lblLieuDeNaissance);
		
		// Relier au controleur.
		btnValider.addActionListener(new AjoutClientBtnListener(this));
		Field_DateN.addKeyListener(new AjoutClientKeyListener(this));
		Field_Nom.addKeyListener(new AjoutClientKeyListener(this));
		Field_Prenom.addKeyListener(new AjoutClientKeyListener(this));
		Field_LieuNaiss.addKeyListener(new AjoutClientKeyListener(this));
		
	}
	
	// Getters des TextFields.
	/**
	 * Getter du TextField Field_Prenom
	 * @return Champ Prenom du client
	 */
	public JTextField getField_Prenom() {
		return Field_Prenom;
	}

	/**
	 * Getter du TextField Field_Nom
	 * @return Champ Nom du client
	 */
	public JTextField getField_Nom() {
		return Field_Nom;
	}
	
	/**
	 * Getter du TextField Field_DateN
	 * @return Champ Date de naissance du client
	 */
	public JTextField getField_DateN() {
		return Field_DateN;
	}
	
	/**
	 * Getter du TextField Field_LieuNaiss
	 * @return Champ Lieu de naissance du client
	 */
	public JTextField getField_LieuNaiss() {
		return Field_LieuNaiss;
	}
	/**
	 * Getter du Label lblToutesLesDonnes 
	 * @return Label décrivant si les données sont bien remplies ou non
	 */
	public JLabel getLblToutesLesDonnes() {
		return lblToutesLesDonnes;
	}
	/**
	 * Getter Color red
	 * @return la couleur rouge
	 */
	public Color getRed() {
		return red;
	}
	/**
	 * Getter Color green
	 * @return la couleur verte
	 */
	public Color getGreen() {
		return green;
	}
	/**
	 * Getter BtnValider
	 * @return le bouton valider
	 */
	public JButton getBtnValider() {
		return btnValider;
	}
	
	/**
	 * Méthode fermant la fenêtre
	 */
	public void close(){this.dispose();}
}
